/**
 * FileName: MyBatisObjectHandler
 * Author: Wb
 * Date: 2025/9/24 11:21
 * Description:
 * History:
 */
package org.test.device.config.mybatis;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * 〈一句话功能简述〉<br>
 * 〈操作sql数据公共类型统一处理〉
 *
 * @author Wb
 * @create 2025/9/24
 * @since 1.0.0
 */
@Component
public class MyBatisObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        // 自动填充创建时间和更新时间
        this.strictInsertFill(metaObject, "createdTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "updatedTime", Date.class, new Date());

        // 假设创建人ID和更新人ID可以通过某种方式获取，例如从当前登录用户中获取
        String currentUserId = "Wb";//getCurrentUserId(); // 需要实现此方法
        this.strictInsertFill(metaObject, "createdBy", String.class, currentUserId);
        this.strictInsertFill(metaObject, "updatedBy", String.class, currentUserId);

        // 自动生成ID，可以使用UUID或其他生成策略
        //this.strictInsertFill(metaObject, "id", String.class, java.util.UUID.randomUUID().toString());
        this.strictInsertFill(metaObject, "deleted", Integer.class, 0);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        // 自动填充更新时间
        this.setFieldValByName("updatedTime", new Date(),metaObject);

        // 假设更新人ID可以通过某种方式获取，例如从当前登录用户中获取
        String currentUserId = "Wb";//getCurrentUserId(); // 需要实现此方法
        this.setFieldValByName("updatedBy", currentUserId, metaObject);
    }
}